package com.eastfair.pay.service;

import com.eastfair.boot.service.SuperService;
import com.eastfair.pay.entity.ChinaumsLog;

import java.util.List;

import com.eastfair.pay.vo.*;
import com.eastfair.pay.dto.*;

/**
 * <p>
 * 业务接口
 * 调用银联日志
 * </p>
 *
 * @author linan
 * @date 2023-05-05
 */
public interface ChinaumsLogService extends SuperService<ChinaumsLog> {
    /**
     * do转vo
     *
     * @param model
     */
    ChinaumsLogVO doToVo(ChinaumsLog model);

    /**
     * do转vo
     *
     * @param modelList
     */
    List<ChinaumsLogVO> doToVos(List<ChinaumsLog> modelList);


    /**
     * 通用查询
     *
     * @param modelDTO DTO
     * @param ids      主键id集合
     * @return list
     */
    List<ChinaumsLog> list(ChinaumsLogDTO modelDTO, List<Long> ids);

    /**
     * 通用查询
     *
     * @param modelDTO DTO
     * @param ids      主键id集合
     * @return list
     */
    List<ChinaumsLog> listOfCache(ChinaumsLogDTO modelDTO, List<Long> ids);

    /**
     * 发起支付，获取银联下单url
     * @param chinaumsLog chinaumsLog
     * @return ChinaumsLogVO
     */
    ChinaumsLogVO initiationOfPayments(ChinaumsLogDTO chinaumsLog) throws Exception;

    /**
     * 获取支付二维码
     * @param chinaumsLog chinaumsLog
     * @return ChinaumsLogVO
     */
    ChinaumsLogVO getPaymentQrCode(ChinaumsLogDTO chinaumsLog) throws Exception;

    /**
     * 查询支付状态
     * @param chinaumsLog
     * @return
     */
    ChinaumsLogVO queryPayStatus(ChinaumsLogDTO chinaumsLog);

    /**
     * 退款
     * @param chinaumsLog chinaumsLog
     * @return ChinaumsLogVO
     */
    ChinaumsLogVO refund(ChinaumsLogDTO chinaumsLog);

    /**
     * 退款状态查询
     * @param chinaumsLog chinaumsLog
     * @return ChinaumsLogVO
     */
    ChinaumsLogVO queryRefund(ChinaumsLogDTO chinaumsLog) throws Exception;

    /**
     * 小程序支付下单
     * @param chinaumsLog chinaumsLog
     * @return ChinaumsLogVO
     */
    ChinaumsLogVO getMiniPayRequest(ChinaumsLogDTO chinaumsLog) throws Exception;

    /**
     * 网关支付下单
     * @param chinaumsLog chinaumsLog
     * @return ChinaumsLogVO
     */
    ChinaumsLogVO getUpgPayRequest(ChinaumsLogDTO chinaumsLog) throws Exception;
}
